Over the past few decades, Internet has experienced an incredible growth and expansion. Technologies have changed from centralized computing to personalized computing, to mobile computing and now to intelligent services with a convergence of networks, devices and services.
As such, the amount of data packets travelling through the internet or a broadband communication network is incredibly large. Generally, data packets are composed of a header section and a payload section. The payload section is used to carry “useful information” or “actual information” that end-users, for example, want to exchange between each other. The header section is made up with a plurality of fields that are used to “describe the packet” by providing, for example, the source address of the packet, its destination address, the protocol used, the version of the protocol, a checksum for auto-correcting the packet, etc.
In order to know how to deal with each packet, for example, how to forward a packet in a communication network, network nodes, such as routers and switches, need to parse the fields of the header of each packet to extract the information that is needed by the network nodes. To do so, the network nodes often use multi-dimensional tables with associated rules, where the keys used for lookups in the multi-dimensional tables are formed from the multiple packet header fields. These tables are used in many applications such as Software Defined Networking and Access Control Lists (ACLs).
These multi-dimensional tables have two defining characteristics: they are very wide, because there are many fields in a packet header, and many of the fields are wildcarded (i.e. they match all values). For example, an OpenFlow switch has a table which consists of 15 fields spread across four layers, i.e. datalink, MultiProtocol Label Switching (MPLS), network, and transport layers. However, an Internet Protocol version 4 (IPv4) forwarding table in a router would use only one of the fields, i.e. the field comprising the destination IP address, and wildcarding all the other fields, in order to know how, i.e. where, to forward an incoming packet.
Using the example of the forwarding table, when the router receives the packet, its parser will extract information from a plurality of fields of the packet header to build a key for lookup in the table of the router. However, many of the fields in the table are wildcarded, i.e. they can match any value. Therefore, the parser or parsing code will have extracted the plurality of packet header fields for no reason, wasting precious processing resources.
Therefore, there is still a need to improve packet parsing in a communication network.